package com.thunder.ktv.scoreengine2sdk;

/**
 * 错误码枚举
 * 定义了评分引擎可能返回的各种错误码
 */
public enum ErrorCode {
    /**
     * 操作成功
     */
    SUCCESS(0, "操作成功"),
    
    /**
     * 文件未找到
     */
    FILE_NOT_FOUND(1, "文件未找到"),
    
    /**
     * 文件损坏
     */
    FILE_CORRUPT(2, "文件损坏"),
    
    /**
     * 文件版本不匹配
     */
    FILE_VERSION_MISMATCH(3, "文件版本不匹配"),
    
    /**
     * 帧大小不匹配
     */
    FRAME_SIZE_MISMATCH(4, "帧大小不匹配"),
    
    /**
     * 采样率不匹配
     */
    SAMPLE_RATE_MISMATCH(5, "采样率不匹配"),
    
    /**
     * 配置无效
     */
    CONFIG_INVALID(6, "配置无效"),
    
    /**
     * 内存不足
     */
    OUT_OF_MEMORY(7, "内存不足"),
    
    /**
     * 内存分配失败
     */
    MEMORY_ALLOC_FAILED(8, "内存分配失败"),
    
    /**
     * 引擎未初始化
     */
    ENGINE_NOT_INITIALIZED(101, "引擎未初始化"),
    
    /**
     * 无效的音频帧
     */
    AUDIO_FRAME_INVALID(102, "无效的音频帧"),
    
    /**
     * 音频处理错误
     */
    AUDIO_PROCESSING(105, "音频处理错误"),
    
    /**
     * 未知错误
     */
    UNKNOWN(999, "未知错误");
    
    private final int value;
    private final String chineseName;
    
    ErrorCode(int value, String chineseName) {
        this.value = value;
        this.chineseName = chineseName;
    }
    
    /**
     * 获取错误码的整数值
     * 
     * @return 错误码对应的整数值
     */
    public int getValue() {
        return value;
    }
    
    /**
     * 获取错误码的中文描述
     * 
     * @return 错误码的中文描述
     */
    public String getChineseName() {
        return chineseName;
    }
    
    /**
     * 根据整数值获取对应的错误码枚举
     * 
     * @param value 整数值
     * @return 对应的错误码枚举，如果没有匹配则返回UNKNOWN
     */
    public static ErrorCode fromValue(int value) {
        for (ErrorCode code : values()) {
            if (code.getValue() == value) {
                return code;
            }
        }
        return UNKNOWN; // 默认返回未知错误
    }
    
    /**
     * 检查是否为成功状态
     * 
     * @return 如果是成功状态则返回true，否则返回false
     */
    public boolean isSuccess() {
        return this == SUCCESS;
    }
    
    @Override
    public String toString() {
        return chineseName;
    }
} 